#include <iostream>
#include <utility>
#include <vector>
#include <queue>
using namespace std;
#define V_MAX 20
// 由于邻接表的每个点邻接的边数量不一样，故使用STL
int main(void) {
    int vnums = 20;
    vector<vector<pair<int, int>>> net; // 有权图
    vector<vector<int>> graph; // 无权图

    // 给定编号从 0 到 n - 1 的 n 个结点。
    // 给定一个整数 n 和一个 edges 列表，
    // 其中 edges[i] = [ai, bi] 表示图中节点 ai 和 bi 之间存在一条无向边。

    vector<vector<int>> edges;
    for (auto e: edges) {
        graph[e[0]].push_back(e[1]);
        graph[e[1]].push_back(e[0]);
    }

    vector<int> visited;

    queue<int> q;
    while (q.size()) {
        int s = q.size();
        for (int i = 0; i < s; ++i) {
            int cur = q.front();
            q.pop();
            for (auto v: graph[cur]) {
                q.push(v);
            }
        }
    }

    return 0;
}
void dfs(vector<int> visited, vector<vector<int>> graph, int i) {
    if (visited[i])
        return;
    visited[i] = true;
    for (auto v: graph[i])
        dfs(visited, graph, v);
}